#ifndef __UDP_H__
#define __UDP_H__
#include "ip.h"
#include "pbuf.h"
#include "netif.h"
#include "stm32f4xx.h"

#define    UDP_HLEN                     8

struct udp_pcb;


typedef void (*udp_recv_fn)(void *arg, struct udp_pcb *pcb, struct pbuf *p,
    ip_addr_t *addr, uint16_t port);

struct udp_pcb{
	IP_PCB
	uint16_t local_port, remote_port;
	udp_recv_fn recv;
	struct udp_pcb *next;	
};
typedef struct{ //Udp首部结构
  uint16_t       nSourPort;   // 源端口号16bit
  uint16_t       nDestPort;   // 目的端口号16bit
  uint16_t       nLength;     // 数据包长度16bit
  uint16_t       nCheckSum;   // 校验和16bit
}Pack_udp_hdr;

//为控制块申请内存
struct udp_pcb *
udp_new(void);
//为控制块绑定内存 
uint8_t 
udp_bind(struct udp_pcb *pcb,ip_addr_t *ipaddr,uint16_t port);
//注册回调函数
void
udp_recv(struct udp_pcb *pcb, udp_recv_fn recv);
#endif
